/**
 * 1）定义类Student，包含三个属性：学号number(int)，年级state(int)，成绩score(int)。
 * 2）创建20个学生对象，学号为1到20，年级和成绩都由随机数确定。
 * 问题一：打印出3年级(state值为3）的学生信息。
 * 问题二：使用冒泡排序按学生成绩排序，并遍历所有学生信息
 * 提示：
 * 1) 生成随机数：Math.random()，返回值类型double;
 * 2) 四舍五入取整：Math.round(double d)，返回值类型long。
 * 年级[1,6] : (int)(Math.random() * 6 + 1)
 * 分数[0,100] : (int)(Math.random() * 101)
 */
public class StudentTest {
    public static void main(String[] args) {
        //创建一个容器数组student[]
        Student[]  students = new Student[20];           //创建装对象的数组
        //使用循环给数组中的元素赋值
        for (int i = 0;i < students.length;i++){
            students[i] = new Student();                    //实例化:创建对象
            students[i].number = i+1;
            students[i].state = (int)(Math.random() * 6 + 1);
            students[i].score = (int)(Math.random() * 101);
        }
        //给每一个学生对象的三个属性赋值----见上


        //需求1:打印出3年级(state值为3）的学生信息。---先遍历 再找出年级==3

        for (int i = 0;i <= students.length;i++){
            if(students[i].state ==3 ){
                Student stu = students[i];
//                System.out.println("该学生的信息为"+stu);           //X打印stu为地址
//                System.out.println("学号"+stu.number+"成绩"+stu.score+"年级"+stu.state);
                stu.showStudentMessage();

            }
        }

        //需求2:使用冒泡排序按学生成绩排序，并遍历所有学生信息
        for (int i = 0; i < students.length-1 ; i++) {
            if (students[i].score < students[i+1].score) {
                for (int j = 0; j <students.length-1-i ; j++) {
                    //错误的,不满足需求
                    int tmp = students[j].score;
                    students[j].score = students[j+1].score;
                    students[j+1].score = tmp;

                    //正确的
                }

            }

        }
    }
}
